;:poke56,80:clr:sys65418 ifpeek(36864)+peek(37000)<>265thenstop sys36864 ;.opt oo *= 20480 strout =$ab1e buff =821 mem3 =2 gra =$6800 ziel =15 mmtab =gra-$800 mmend =gra fn =91 b =6 mem4 =4 run jmp anfang plotter .byt 12 drucker .byt 4 drusa brk char =36 ctr =150 typ =705 ltyp =706 dlen =707 xneg =740 lcount =708 resmod =709 size =710 richtung =711 echoflg =712 mimaflg =713 fat =714 zch =176 unif =704 penx =166 peny =168 kx =247 ky =249 sx =732 sy =736 dx =734 dy =738 tri1 =251 tri2 =253 tri3 =181 bin =170 scfx =715 scfy =716 scax =717 scay =722 retflg =727 retx =728 rety =730 hi .byt 13 .byte "/ plotter-simulator v1" .byt 13 .byte "/" .byt 13 .byte "/ nikolaus heusler" .byt 13 .byte "/ zwengauerweg 18" .byt 13 .byte "/ 8000 muenchen 71" .byt 13 .byte "/" .byt 13 .byte "/ (c) nh-280890-arr" .byt 13 .byte "/ ein nss-programm" .byt 13,0 tx1 .byte "initialisieren" brk tx2 .byte "cursor home" brk tx3 .byte "grafik loeschen" brk tx4 .byte "stift auf" brk tx5 .byte "echo-modus" brk tx6 .byte "stift rel. um" brk tx7 .byte "rotiere" brk tx8 .byte "textgroesse" brk tx9 .byte "reset modus" brk txb .byte "min/max-modus" brk txc .byte "linienabstand" brk txd .byte "linientyp" brk txe .byte "punkttyp" brk txf .byte "grafik drucken" brk txg .byte "punkt bei" brk txh .byte "linie nach" brk txi .byte "linie rel. um" brk txj .byte "schreibe" brk txk .byte "marke nr." brk txl .byte "skalierung" brk txm .byte "fett" brk txn .byte "rueckkehr" brk txo .byte "rechteck" brk txp .byte "mm-einheiten" brk beftab .byte "*hcmerqs/#blao.dipn%zufk" befadr .word init,home,clr,getpen,becho,brel .word rotate,ssize,srest,smima,linab,slintyp,sdottyp .word hcopy,male,blina,blinr,print,setmark,scale .word fatm,autoret,viereck,unit beftxt .word tx1,tx2,tx3,tx4,tx5,tx6,tx7,tx8,tx9 .word txb,txc,txd,txe,txf,txg,txh,txi,txj,txk,txl .word txm,txn,txo,txp grbit .byt 1,2,4,8,16,32,64,128 flpx .byt $82,$18,$10,$62,$4e flpy .byt $82,$34,$7a,$e1,$48 anfang jsr init lda #hi jsr strout ldx $3a inx bne initcont lda #"n" sta 631 lda #"e" sta 632 lda #"w" sta 633 lda #13 sta 634 lda #4 sta 198 initcont jsr 121 beq end jsr $b7f1 stx plotter jsr 121 beq end jsr $b7f1 stx drucker jsr 121 beq end jsr $b7f1 stx drusa end rts new pha lda $9a cmp plotter beq plotty jmp $f1cb plotty pla and #127 sta char pha tya pha txa pha ldy ctr beq noprint lda buff cmp #"p" beq printmod noprint lda char cmp #32 beq ignore printmod lda char cmp #14 bcc last cmp #32 bcc ignore sta buff,y iny cpy #202 bcs too sty ctr ignore pla tax pla tay pla clc rts too jmp $a571 last lda #13 sta buff,y iny lda #0 sta buff,y sta ctr lda #3 sta $9a ldx #0 bit resmod bpl resnrm stx lcount resnrm inx lda buff ldy #befadr-beftab-1 suchbef cmp beftab,y beq foundv dey bpl suchbef bmi weiter foundv tya pha asl tay lda befadr,y sta jump+1 lda befadr+1,y sta jump+2 pla cmp #4 beq jump jsr echo jump jsr 0 jsr echocr lda retflg beq weiter lda retx sta penx lda retx+1 sta penx+1 lda rety sta peny lda rety+1 sta peny+1 weiter lda plotter sta $9a jmp ignore getnum lda #0 sta bin sta bin+1 lda buff,x beq over cmp #"-" bne posit inx lda #128 .byt $2c posit lda #0 sta mem4 getzif lda buff,x cmp #"0" bcc lst cmp #"9"+1 bcs lst asl bin rol bin+1 lda bin+1 sta mem3 lda bin asl rol mem3 asl rol mem3 clc adc bin sta bin php lda buff,x and #15 clc adc bin sta bin lda bin+1 adc #0 plp adc mem3 sta bin+1 inx bne getzif lst clc bit mem4 bpl posi lda bin eor #-1 adc #1 sta bin lda bin+1 eor #-1 adc #0 sta bin+1 clc posi .byt $24 over sec ldy bin lda bin+1 ret rts getnext lda buff,x beq over cmp #$2c beq lst inx bne getnext getkoor jsr getnum bcs ret sty kx sta kx+1 jsr echonum lda mem4 sta xneg jsr getnext bcs ret jsr echoko inx jsr getnum bcs ret sty ky sta ky+1 jsr echonum lda unif bne mm jmp pixel mm txa pha ldx kx lda kx+1 bit xneg bpl xg0 eor #-1 pha txa eor #-1 clc adc #1 tax pla adc #0 xg0 stx $63 sta $62 ldx #$90 sec jsr $bc49 lda #flpx jsr $ba28 jsr $b7f7 sty kx sta kx+1 bit xneg bpl xbi0 eor #-1 pha tya eor #-1 clc adc #1 tay sty kx pla adc #0 sta kx+1 xbi0 ldx ky lda ky+1 bit mem4 bpl yg0 eor #-1 pha txa eor #-1 clc adc #1 tax pla adc #0 yg0 stx $63 sta $62 ldx #$90 sec jsr $bc49 lda #flpy jsr $ba28 jsr $b801 sty ky sta ky+1 bit mem4 bpl ybi0 eor #-1 pha tya eor #-1 clc adc #1 tay sty ky pla adc #0 sta ky+1 ybi0 pla tax pixel clc rts getpen jsr getkoor bcs non lda kx sta penx lda kx+1 sta penx+1 lda ky sta peny lda ky+1 sta peny+1 rts echo bit echoflg bmi echoja non rts echoja stx bin asl tax lda beftxt+1,x tay lda beftxt,x jsr strout such20 jsr echosp lda 211 cmp #ziel bcc such20 ldx bin rts echocr lda #13 .byt $2c echosp lda #32 .byt $2c echoko lda #44 .byt $2c echose lda #59 bit echoflg bpl non .byt $2c crlf lda #13 jmp $ffd2 echooo bit echoflg bpl non pha lda #"a" jsr $ffd2 pla bmi an lda #"u" jsr $ffd2 lda #"s" .byt $2c an lda #"n" jmp $ffd2 echonum bit echoflg bpl non sta bin txa pha lda bin jsr $b391 jsr $bddd ldx $100 cpx #32 bne plubs adc #0 plubs jsr strout pla tax rts init jsr clr jsr home sta typ sta ltyp sta echoflg sta resmod sta mimaflg sta ctr sta scfx sta scfy sta fat sta retflg sta unif sta richtung sta 55 lda #>run sta 56 lda #1 sta size sta dlen lda #new sta $326 sty $327 rts home lda #0 sta penx sta penx+1 sta peny sta peny+1 rts clr jsr ram ldy #0 ldx #>gra sty mem3 stx mem3+1 lda #128 cl sta (mem3),y iny bne cl inc mem3+1 bne cl rom pha lda #55 sta 1 cli pla rts ram pha lda #48 sei sta 1 pla rts printline jsr ram clc lda #<480 adc mem3 sta mem4 pha lda #>480 adc mem3+1 sta mem4+1 pha leer lda mem4 bne overfl dec mem4+1 overfl dec mem4 ldy mem3 cpy mem4 bne lineon ldy mem3+1 cpy mem4+1 beq lineoff lineon ldy #0 lda (mem4),y cmp #128 beq leer lineoff inc mem4 bne next inc mem4+1 next ldx #0 same ldy #0 lda (mem3),y ldy mem4 cpy mem3 bne encore ldy mem4+1 cpy mem3+1 beq neuw encore inc mem3 bne noinc inc mem3+1 noinc ldy #0 inx beq neuw cmp (mem3),y beq same neuw cpx #4 bcs lohnt repeat jsr rom jsr $ffd2 jsr ram dex bne repeat beq fertig lohnt pha jsr rom lda #26 jsr $ffd2 txa jsr $ffd2 pla jsr $ffd2 jsr ram fertig ldy mem4 cpy mem3 bne next ldy mem4+1 cpy mem3+1 bne next pla sta mem3+1 pla sta mem3 jmp rom dot lda penx+1 beq xok cmp #>480 beq testlowx stopp rts testlowx lda penx cmp #<480 bcs stopp xok lda peny+1 ldy peny cmp #>567 bcc yok bne stopp cpy #<567 bcs stopp yok sty char sta char+1 bit mimaflg bpl nomima lda penx sta mem3 lda penx+1 asl mem3 rol asl mem3 rol clc adc #>mmtab sta mem3+1 ldy #0 sec lda peny sbc (mem3),y iny lda peny+1 sbc (mem3),y bcs langw1 dey lda peny sta (mem3),y iny lda peny+1 sta (mem3),y lda #128 .byt $2c langw1 lda #0 sta mem4 iny sec lda (mem3),y sbc peny iny lda (mem3),y sbc peny+1 bcs langw2 dey lda peny sta (mem3),y iny lda peny+1 sta (mem3),y lda #128 .byt $2c langw2 lda #0 ora mem4 bne nomima rts nomima lda #<448 ldy #>448 sta mem4 sty mem4+1 dey sty mem3 ldy #7 durch128 lda char sec sbc mem4 pha lda char+1 sbc mem4+1 bcc illeg sta char+1 pla sta char .byt $24 illeg pla rol mem3 lsr mem4+1 ror mem4 dey bne durch128 lda mem3 lsr ror mem4 lsr ror mem4 lsr ror mem4 sta mem4+1 lda #0 sta mem3 sta mem3+1 ldy #4 viermal lda mem4 clc adc mem3 sta mem3 lda mem4+1 adc mem3+1 sta mem3+1 asl mem4 rol mem4+1 dey bne viermal lda mem3 clc adc penx sta mem3 lda mem3+1 adc penx+1 adc #>gra sta mem3+1 jsr ram ldy char lda grbit,y ldy typ beq set cpy #1 beq reset cpy #2 bne komisch ldy #0 eor (mem3),y final sta (mem3),y komisch jmp rom set ldy #0 ora (mem3),y bne final reset ldy #0 eor #-1 and (mem3),y bne final plot lda ltyp beq fulline cmp #1 beq strich cmp #2 beq strichel lda lcount cmp #5 bcc allow beq forbid cmp #7 beq forbid cmp #9 bcs newl bcc allow strichel lda lcount cmp #5 bcc allow beq forbid cmp #7 bcs newl bcc allow strich lda lcount cmp dlen bcc allow sbc dlen cmp dlen bcs newl bcc forbid allow inc lcount fulline jmp point newl lda #-1 sta lcount forbid inc lcount rts rline lda kx sta mem3 lda kx+1 eor #128 asl lda kx+1 sta mem3+1 ora mem3 php lda ky sta mem4 lda ky+1 eor #128 asl lda ky+1 sta mem4+1 ora mem4 jmp contl aline lda kx sec sbc penx sta mem3 lda kx+1 sbc penx+1 sta mem3+1 eor #128 asl lda mem3+1 ora mem3 php lda ky sec sbc peny sta mem4 lda ky+1 sbc peny+1 sta mem4+1 eor #128 asl lda mem4+1 ora mem4 contl beq noydiff bcs zily lda #-1 .byt $2c zily lda #1 noydiff sta dy sta sy ror eor #128 sta dy+1 sta sy+1 lda #0 plp beq noxdiff bcs zilx lda #-1 .byt $2c zilx lda #1 noxdiff sta dx sta sx ror eor #128 sta dx+1 sta sx+1 lda mem3 sta tri1 ldy mem3+1 sty tri1+1 bpl plubsx eor #-1 clc adc #1 sta tri1 tya eor #-1 adc #0 sta tri1+1 plubsx lda mem4 sta tri2 ldy mem4+1 sty tri2+1 bpl plubsy eor #-1 clc adc #1 sta tri2 tya eor #-1 adc #0 sta tri2+1 plubsy lda tri1 sec sbc tri2 lda tri1+1 sbc tri2+1 bcs stimmtso lda #0 sta sx sta sx+1 lda tri2 pha lda tri2+1 pha lda tri1 sta tri2 lda tri1+1 sta tri2+1 pla sta tri1+1 pla sta tri1 jmp jetzta stimmtso lda #0 sta sy sta sy+1 jetzta lda tri1+1 sta zch+1 sta tri3+1 lda tri1 sta zch lsr tri3+1 ror sta tri3 linie jsr plot lda zch bne nodec dec zch+1 nodec dec zch bit zch+1 bpl weiterl rts weiterl lda tri3 clc adc tri2 sta tri3 lda tri3+1 adc tri2+1 sta tri3+1 lda tri3 sec sbc tri1 tay lda tri3+1 sbc tri1+1 bcc microstep sta tri3+1 sty tri3 lda penx clc adc dx sta penx lda penx+1 adc dx+1 sta penx+1 lda peny clc adc dy sta peny lda peny+1 adc dy+1 sta peny+1 jmp linie microstep lda penx clc adc sx sta penx lda penx+1 adc sx+1 sta penx+1 lda peny clc adc sy sta peny lda peny+1 adc sy+1 sta peny+1 jmp linie punt lda penx pha lda penx+1 pha lda peny pha lda peny+1 pha txa pha lda scfx beq xlass lda penx ldx penx+1 sta $63 stx $62 ldx #144 sec jsr $bc49 lda #scax jsr $ba28 jsr $b7f7 sty penx sta penx+1 xlass lda scfy beq ylass lda peny ldx peny+1 sta $63 stx $62 ldx #144 sec jsr $bc49 lda #scay jsr $ba28 jsr $b7f7 sty peny sta peny+1 ylass jsr dot pla tax pla sta peny+1 pla sta peny pla sta penx+1 pla sta penx nofat rts point jsr punt lda fat beq nofat lda peny+1 pha lda peny pha lda penx+1 pha lda penx pha inc penx bne ll1 inc penx+1 ll1 jsr punt inc peny bne ll2 inc peny+1 ll2 jsr punt pla sta penx pla sta penx+1 jsr punt pla sta peny pla sta peny+1 rts becho jsr getnum bcs rueck tya lsr ror and #128 sta echoflg lda #4 jmp echo rueck rts brel jsr getkoor bcs rueck movepen lda penx clc adc kx sta penx lda penx+1 adc kx+1 sta penx+1 lda peny clc adc ky sta peny lda peny+1 adc ky+1 sta peny+1 rts rotate jsr getnum bcs rueck sty richtung jmp echonum ssize jsr getnum bcs rueck iny sty size jmp echonum srest jsr getnum bcs rueck tya lsr lda #0 ror sta resmod jmp echooo smima jsr getnum bcs rueck tya lsr lda #0 ror sta mimaflg pha jsr echooo pla bpl rueck ldy #0 ldx #>mmtab sty mem3 stx mem3+1 clrtab lda #-1 sta (mem3),y iny sta (mem3),y lda #0 iny sta (mem3),y iny sta (mem3),y iny bne clrtab inx inc mem3+1 cpx #>mmend bcc clrtab rts linab jsr getnum bcs fini sty dlen jmp echonum fini rts slintyp lda #0 sta ltyp lda #1 sta dlen jsr getnum bcs fini sty ltyp jmp echonum sdottyp lda #0 sta typ jsr getnum bcs fini sty typ jmp echonum hcopy lda #0 sta 183 ldx drucker ldy drusa lda #fn jsr $ffba jsr $ffc0 ldx #fn jsr $ffc9 jsr crlf jsr $ffd2 jsr $ffd2 lda #8 jsr $ffd2 lda #0 sta mem3 lda #>gra sta mem3+1 lda #81 sta zch ploop jsr printline jsr $f6ed beq abbruch jsr crlf dec zch bne ploop lda #15 jsr $ffd2 jsr crlf jsr $ffd2 jsr $ffd2 abbruch jsr $ffcc lda #fn jmp $ffc3 male jsr getpen bcs nene jmp point nene rts blina jsr getkoor bcs nene jsr aline jsr getnext bcs nene jsr echose inx bne blina blinr jsr getkoor bcs nene jsr rline jsr getnext bcs nene jsr echose inx bne blinr print lda buff,x beq nene cmp #13 beq nene bit echoflg bpl noech jsr $ffd2 noech and #$3f dotext sta zch lda #font sta mem3+1 suchz lda zch beq found ldy #0 suchnil lda (mem3),y beq endfnd inc mem3 bne suchnil inc mem3+1 bne suchnil endfnd dec zch inc mem3 bne suchz inc mem3+1 bne suchz found txa pha bauz ldy #0 lda (mem3),y bne zeichne jmp zchend zeichne pha pha lsr lsr lsr lsr sta b pla and #7 sec sbc richtung sec sbc richtung and #7 tax sty kx+1 sty ky+1 ldy size sty kx and #4 beq sizpox tya eor #-1 tay iny sty kx lda #-1 sta kx+1 sizpox txa and #3 bne no3x sta kx sta kx+1 no3x txa sec sbc #2 and #7 tax ldy size sty ky and #4 beq sizpoy tya eor #-1 tay iny sty ky lda #-1 sta ky+1 sizpoy txa and #3 bne no3y sta ky sta ky+1 no3y pla and #8 bne nodraw drwz jsr pline dec b bne drwz jmp weitz nodraw jsr movepen dec b bne nodraw weitz inc mem3 bne qbauz inc mem3+1 qbauz jmp bauz zchend pla tax inx jmp print pline lda mem3 pha lda mem3+1 pha jsr rline pla sta mem3+1 pla sta mem3 rts setmark jsr getnum bcs nana tya pha lda #0 jsr echonum pla beq nana cmp #7 bcs nana adc #$3f pha lda #0 sta buff-1,x pla jmp dotext nana rts scale jsr getnum bcs nana and #31 sta mem3 sty mem3+1 jsr echonum txa pha lda mem3 ldy mem3+1 cmp #>100 bne scaxan cpy #<100 beq scaxaus scaxan sty $63 sta $62 ldx #144 sec jsr $bc49 jsr $bafe jsr $bafe ldx #scax jsr $bbd4 lda #1 .byt $2c scaxaus lda #0 sta scfx jsr echoko pla tax jsr getnext bcs nana inx jsr getnum bcs nana and #31 sta mem3 sty mem3+1 jsr echonum lda mem3 ldy mem3+1 cmp #>100 bne scayan cpy #<100 beq scayaus scayan sty $63 sta $62 ldx #144 sec jsr $bc49 jsr $bafe jsr $bafe ldx #scay jsr $bbd4 lda #1 .byt $2c scayaus lda #0 sta scfy rts fatm jsr getnum bcs parwr tya lsr lda #0 ror sta fat jmp echooo parwr rts autoret jsr getnum bcs parwr tya lsr lda #0 ror sta retflg jsr echooo lda penx sta retx lda penx+1 sta retx+1 lda peny sta rety lda peny+1 sta rety+1 rts viereck jsr getpen bcs parwr jsr getnext bcs parwr inx jsr echose jsr getkoor bcs parwr lda peny pha lda peny+1 pha lda penx pha lda penx+1 pha lda ky pha lda ky+1 pha lda peny pha lda peny+1 pha lda #2 sta b zvie pla sta ky+1 pla sta ky jsr aline dec b bne zvie pla sta kx+1 pla sta kx jsr aline pla sta ky+1 pla sta ky jmp aline unit jsr getnum bcs parwr tya lsr lda #0 ror sta unif jmp echooo font =*